#coding:utf-8
__author__ = 'hl'
import wx
class ChangeDBUI(wx.Dialog):
    def __init__(self,parent,id,data):
        wx.Dialog.__init__(self,parent,id,u'新建连接')
        self.data = data
        self.createUI()


    def createUI(self):

        #主机名或者IP地址
        hostLbl = wx.StaticText(self,-1,u'主机名或者IP地址:')
        self.hostTxt = wx.TextCtrl(self,-1,self.data.getHost())

        #数据库名称
        dbLbl = wx.StaticText(self,-1,u'数据库名称:')
        self.dbTxt = wx.TextCtrl(self,-1,self.data.getDb())

        #端口
        postLbl = wx.StaticText(self,-1,u'端口:')
        self.postTxt = wx.TextCtrl(self,-1,str(self.data.getPort()),size=(40,20))

        #用户名
        userLbl = wx.StaticText(self,-1,u'用户名:')
        self.userTxt = wx.TextCtrl(self,-1,self.data.getUser())

        #密码
        pwdLbl = wx.StaticText(self,-1,u'密码:')
        self.pwdTxt = wx.TextCtrl(self,-1,self.data.getPwd())

        #改变连接
        chgConnBtn = wx.Button(self,-1,u'新建连接')

        #布局
        mainSizer = wx.GridBagSizer(5,5)
        #布局-主机名或者IP地址
        mainSizer.Add(hostLbl,(1,1),(1,4),wx.EXPAND)
        mainSizer.Add(self.hostTxt,(1,5),(1,6),wx.EXPAND)

        #布局-端口
        mainSizer.Add(postLbl,(2,1),(1,4))
        mainSizer.Add(self.postTxt,(2,5),(1,1),wx.EXPAND)

        #布局-数据库
        mainSizer.Add(dbLbl,(3,1),(1,4))
        mainSizer.Add(self.dbTxt,(3,5),(1,3),wx.EXPAND)

        #布局-用户名
        mainSizer.Add(userLbl,(4,1),(1,4))
        mainSizer.Add(self.userTxt,(4,5),(1,3),wx.EXPAND)

        #布局-密码
        mainSizer.Add(pwdLbl,(5,1),(1,4))
        mainSizer.Add(self.pwdTxt,(5,5),(1,3),wx.EXPAND)

        mainSizer.Add((5,5),(6,1))
        #布局-改变连接
        mainSizer.Add(chgConnBtn,(7,3),(1,3))
        mainSizer.Add(wx.Button(self,wx.ID_CANCEL,u'取消'),(7,6),(1,3))
        mainSizer.Add((5,5),(8,1))
        mainSizer.Add((10,10),(1,11))

        self.SetSizer(mainSizer)
        mainSizer.Fit(self)
        mainSizer.SetSizeHints(self)

        #绑定事件
        self.hostTxt.Bind(wx.EVT_TEXT,self.OnHostTxt)
        self.dbTxt.Bind(wx.EVT_TEXT,self.OnDbTxt)
        self.postTxt.Bind(wx.EVT_TEXT,self.OnPortTxt)
        self.userTxt.Bind(wx.EVT_TEXT,self.OnUserTxt)
        self.pwdTxt.Bind(wx.EVT_TEXT,self.OnPwdTxt)
        chgConnBtn.Bind(wx.EVT_BUTTON,self.OnChgBtn)

    def OnHostTxt(self,evt):
        self.data.setHost(self.hostTxt.GetValue())


    def OnDbTxt(self,evt):
        self.data.setDb(self.dbTxt.GetValue())

    def OnPortTxt(self,evt):
        self.data.setPort(int(self.postTxt.GetValue()))

    def OnUserTxt(self,evt):
        self.data.setUser(self.userTxt.GetValue())

    def OnPwdTxt(self,evt):
        self.data.setPwd(self.pwdTxt.GetValue())

    def OnChgBtn(self,evt):
        self.data.connect()

    def GetValue(self):
        return self.data